package com.dilidili.mapper;

import com.domain.Video;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * @PackgeName: com.dilidili.mapper
 * @ClassName: Video
 * @Author: 零
 * Date: 2022/4/9 9:48
 * project name: spring-cloud-mybilibli
 * @Version:
 * @Description:
 */
@Mapper
public interface VideoMapper {
    /**
     * 查询用户发布的总视频数量
     * @param userId 用户id
     * @return
     */
    Integer playCounts(@Param("userId") Integer userId,@Param("videoState") Integer videoState);

    /**
     * 查询用户发布的视频
     * @param userId 用户id
     * @param videoState 视频状态 只查视频状态为正常的
     * @return 返回数据
     */
    List<Map> queryUserId(@Param("userId") Integer userId,@Param("videoState") Integer videoState);


    /**
     * 查询用户分区视频条数SQL
     * @param userId
     * @param videoState
     * @return
     */
    List<Map<String,Object>> bigzoneByUserCount(@Param("userId") Integer userId,@Param("videoState") Integer videoState);


    /**
     * 查询用户视频并综合排序 动态SQL
     * @param userId 用户id
     * @param videoState 视频状态
     * @param bigzoneName 分区名称
     * @return
     */
    List<Map> synthesizeQuery(@Param("userId") Integer userId,@Param("videoState") Integer videoState,@Param("bigzoneName") String bigzoneName);

    /**
     * 查询用户视频根据点击量
     * @param userId 用户id
     * @param videoState 视频状态
     * @param bigzoneName 分区名称
     * @return
     */
    List<Map> synthesizeQueryDesc(@Param("userId") Integer userId,@Param("videoState") Integer videoState,@Param("bigzoneName") String bigzoneName);

    /**
     * 查询用户已经被下架的视频
     * @param userId 用户id
     * @param videoState 视频
     * @param videoTitle 下架原因
     * @return
     */
    List<Map<String,Object>> videoSold(@Param("userId") Integer userId,@Param("videoState") Integer videoState,@Param("videoTitle") String videoTitle);

    /**
     * 查询用户所收藏的视频
     * @return
     */
    List<Map<String,Object>> collectvideoUserById(@Param("userId") Integer userId,@Param("videoState") Integer videoState);

    /**
     * 查询用户所有总视频播放量
     * @return
     */
    Integer videoIsreprintSum(@Param("userId") Integer userId,@Param("videoState") Integer videoState);

    /**
     * 删除视频
     * @param videoId 视频id
     * @return 返回结果 result
     */
    Integer videoDelByVideoId(@Param("videoId") Integer videoId);
}
